namespace Sensor.UI.Models;

/// <summary>
/// 日志条目模型
/// </summary>
/// <remarks>
/// 表示应用程序中的单个日志条目，包含时间戳和消息内容
/// 用于在界面上显示日志信息
/// </remarks>
public class LogInfo
{
    #region 公共属性
    /// <summary>
    /// 获取或设置日志时间戳
    /// </summary>
    /// <value>日志记录的时间</value>
    public DateTime Time { get; set; }

    /// <summary>
    /// 获取或设置日志消息内容
    /// </summary>
    /// <value>日志的详细信息</value>
    public string Message { get; set; } = string.Empty;
    #endregion

    #region 构造函数
    /// <summary>
    /// 使用指定的消息初始化 LogInfo 类的新实例
    /// </summary>
    /// <param name="message">日志消息内容</param>
    /// <exception cref="ArgumentNullException">当 message 为 null 时抛出</exception>
    public LogInfo(string message)
    {
        ArgumentNullException.ThrowIfNull(message);
        Time = DateTime.Now;
        Message = message;
    }

    /// <summary>
    /// 使用指定的时间和消息初始化 LogInfo 类的新实例
    /// </summary>
    /// <param name="time">日志时间戳</param>
    /// <param name="message">日志消息内容</param>
    /// <exception cref="ArgumentNullException">当 message 为 null 时抛出</exception>
    public LogInfo(DateTime time, string message)
    {
        ArgumentNullException.ThrowIfNull(message);
        Time = time;
        Message = message;
    }
    #endregion

    #region 公共方法
    /// <summary>
    /// 返回表示当前日志条目的字符串
    /// </summary>
    /// <returns>包含时间戳和消息的格式化字符串</returns>
    public override string ToString() => $"[{Time:yyyy-MM-dd HH:mm:ss}] {Message}";
    #endregion
}
